#!/bin/bash

# 监听Kubernetes节点数量变化的脚本

# 配置参数
CHECK_INTERVAL=10          # 检查间隔（秒）
LOG_FILE="/var/log/k8s_node_monitor.log"  # 日志文件路径

# 初始化变量
previous_count=$(kubectl get nodes --no-headers | wc -l)
current_count=$previous_count

# 创建日志目录（如果不存在）
mkdir -p "$(dirname "$LOG_FILE")"

# 日志记录函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}


log "开始监控Kubernetes节点，初始节点数量: $current_count"

# 主监控循环
while true; do
    # 获取当前节点数（排除HEADER行和NotReady节点）
    current_count=$(kubectl get nodes --no-headers | grep -v "NotReady" | wc -l)
    
    # 检测变化
    if [[ "$current_count" != "$previous_count" ]]; then
        # 获取详细节点状态
        node_details=$(kubectl get nodes -o wide 2>&1)
        
        # 生成变化报告
        report="节点数量变化: $previous_count -> $current_count\n\n当前节点状态:\n$node_details"
        log "$report"
        
        previous_count=$current_count
    fi
    
    # 定时检查
    sleep $CHECK_INTERVAL
done